package com.aliwo.service.impl;

import com.aliwo.request.SaveHttpJobInfoRequest;
import com.aliwo.service.HttpApiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tech.powerjob.client.PowerJobClient;
import tech.powerjob.common.response.ResultDTO;

/**
 * @author:xuyayuan
 * @date:2021/7/21 21:45
 * @description:TODO
 */
@SuppressWarnings("all")
@Service
@Slf4j
@Transactional(readOnly = true, rollbackFor = Exception.class)
public class HttpApiServiceImpl implements HttpApiService {

    @Autowired
    private PowerJobClient powerJobClient;

    /**
     * 功能描述:新增或修改HttpAPI处理器，ID存在进行修改，否则创建HttpApi任务
     *
     * @param saveHttpJobInfoRequestrequest
     * @return tech.powerjob.common.response.ResultDTO<java.lang.Long>
     * @author xuyayuan
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public ResultDTO<Long> saveApiJob(SaveHttpJobInfoRequest saveHttpJobInfoRequest) {
        ResultDTO<Long> resultDTO = powerJobClient.saveJob(saveHttpJobInfoRequest);
        return resultDTO;
    }

    ///**
    // * 功能描述:查找任务
    // *
    // * @param jobId
    // * @return tech.powerjob.common.response.ResultDTO<tech.powerjob.common.response.JobInfoDTO>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<JobInfoDTO> fetchJob(Long jobId) {
    //    return powerJobClient.fetchJob(jobId);
    //}
    //
    ///**
    // * 功能描述:禁用任务
    // *
    // * @param jobId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Void>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<Void> disableJob(Long jobId) {
    //    return powerJobClient.disableJob(jobId);
    //}
    //
    ///**
    // * 功能描述:启用某个任务
    // *
    // * @param jobId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Void>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<Void> enableJob(Long jobId) {
    //    return powerJobClient.enableJob(jobId);
    //}
    //
    ///**
    // * 功能描述:删除某个任务
    // *
    // * @param jobId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Void>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<Void> deleteJob(Long jobId) {
    //    return powerJobClient.deleteJob(jobId);
    //}
    //
    ///**
    // * 功能描述:运行某个任务（支持延迟执行）
    // *
    // * @param jobId
    // * @param instanceParams
    // * @param delayMS
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Long>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<Long> runJob(Long jobId, String instanceParams, long delayMS) {
    //    return powerJobClient.runJob(jobId, instanceParams, delayMS);
    //}
    //
    ///**
    // * 功能描述:取消某个定时任务实例
    // *
    // * @param instanceId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Void>
    // * @author xuyayuan
    // */
    //@Transactional(rollbackFor = Exception.class)
    //@Override
    //public ResultDTO<Void> cancelInstance(Long instanceId) {
    //    return powerJobClient.cancelInstance(instanceId);
    //}
    //
    ///**
    // * 功能描述:停止某个任务实例
    // *
    // * @param instanceId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Void>
    // * @author xuyayuan
    // */
    //@Transactional(rollbackFor = Exception.class)
    //@Override
    //public ResultDTO<Void> stopInstance(Long instanceId) {
    //    return powerJobClient.stopInstance(instanceId);
    //}
    //
    ///*
    // * 功能描述:查询某个任务实例
    // * @author xuyayuan
    // * @param instanceId
    // * @return tech.powerjob.common.response.ResultDTO<tech.powerjob.common.response.InstanceInfoDTO>
    // */
    //@Override
    //public ResultDTO<InstanceInfoDTO> fetchInstanceInfo(Long instanceId) {
    //    return powerJobClient.fetchInstanceInfo(instanceId);
    //}
    //
    ///**
    // * 功能描述:查询某个任务实例的状态
    // *
    // * @param instanceId
    // * @return tech.powerjob.common.response.ResultDTO<java.lang.Integer>
    // * @author xuyayuan
    // */
    //@Override
    //public ResultDTO<Integer> fetchInstanceStatus(Long instanceId) {
    //    return powerJobClient.fetchInstanceStatus(instanceId);
    //}
}
